const singer = [{
		name: '周杰伦',
		age: 34
	},
	{
		name: '许嵩',
		age: 34
	},
	{
		name: '邓紫棋',
		age: 44
	},
	{
		name: '张碧晨',
		age: 44
	},
	{
		name: '薛之谦',
		age: 44
	},
	{
		name: '封茗囧菌',
		age: 44
	},
]

// 删除：指定要删除的第一项和删除个数
// const newSinger1 = singer.splice(0, 1)
// console.log(newSinger1);
// // 插入：指定位置插入任意数量的项，删除的个数，要插入的项
// const newSinger2 = singer.splice(0, 0, 'hello', 'world')
// console.log(newSinger2);
// const newSinger3 = singer.splice(0, 2, 'hello', 'world')
// console.log(newSinger3);
// // 替换：指定位置插入任意数量的项，删除任意鼠疫数量的项
// const newSinger4 = singer.splice(0, 1, 'welcome', 'you')
// console.log(newSinger4);
// // 将两个数组合并再排序
// var merge = function(nums1, m, nums2, n) {
// 	nums1.splice(m, nums1.length - m, ...nums2);
// 	nums1.sort((a, b) => a - b);
// };

Array.prototype.my_splice = function(start, length, ...args) {
	// if (length === 0) return []
	const result = [],
		targetArr = [];
	if (start < 0) {
		start = this.length + start
	}
	for (let i = 0; i < this.length; i++) { //遍历整个原数组
		if (i === start) { //指定位置
			for (let j = start; j < start + length; j++) { //从指定位置开始切割，切割到指定删除个数后的长度
				result.push(this[j]);
				i = j;
			}
			targetArr.push(...args);
			if (!length) { //弥补删除个数为0时候漏掉的一条数组
				targetArr.push(this[i])
			}
		} else {
			targetArr.push(this[i]);
		}
	}
	for (let i = 0; i < targetArr.length; i++) { //把原数组的每一项修改为targetArr里的每一项
		this[i] = targetArr[i]
	}

	if (start + length > this.length) {
		if (start == 0) {
			result.length = this.length
		} else {
			result.length = this.length - 1 - start
		}
	}
	this.length = targetArr.length
	return result //返回切出来的数组
}
const arr = singer.my_splice(-1, 10, 'hello', 'world')
console.log(singer, 'singer');
console.log(arr, 'arr');
